
import java.util.*;
import org.w3c.dom.*;
import javax.xml.parsers.*;
import javax.xml.transform.*;
import javax.xml.transform.dom.*;
import javax.xml.transform.stream.*;

public class Catalogo {

	private ArrayList<Libro> libreria;
		
	public Catalogo(){
		libreria=new ArrayList<Libro>();
		
	}
	
	public void addLibro(Libro lib){
		libreria.add(lib);
		
	}
	
	
	public void delLibro(int num){
		libreria.remove(num);
	}
	
	public void cambioCat(int num,String cat){
		libreria.get(num).setCategoria(cat);
	}
	
	public void cambioEst(int num,String est){
		libreria.get(num).setEstado(est);
	}
	
	public ArrayList<Libro> getLibreria() {
		return libreria;
	}
	
	public void setLibreria(ArrayList<Libro> libreria) {
		this.libreria = libreria;
	} 	
	
	public void DoXML() throws ParserConfigurationException, TransformerFactoryConfigurationError, TransformerException{
		DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
		DocumentBuilder builder = factory.newDocumentBuilder();
		DOMImplementation implementation = builder.getDOMImplementation();
		
		Document document = implementation.createDocument(null, "Catalogo", null);
		document.setXmlVersion("1.0");
		
		Element raiz = document.getDocumentElement();
		int i=0;
		for (Libro l: libreria){
		i++;
		Element nodoLibro = document.createElement("Libro_"+ i);
		Element nodoAut = document.createElement("Autor");
		Text nodoValorAut = document.createTextNode(l.getAutor());
		nodoAut.appendChild(nodoValorAut);
		nodoLibro.appendChild(nodoAut);
		Element nodoTit = document.createElement("Titulo");
		Text nodoValorTit = document.createTextNode(l.getTitulo());
		nodoTit.appendChild(nodoValorTit);
		nodoLibro.appendChild(nodoTit);
		Element nodoCat = document.createElement("Categoria");
		Text nodoValorCat = document.createTextNode(l.getCategoria());
		nodoCat.appendChild(nodoValorCat);
		nodoLibro.appendChild(nodoCat);
		Element nodoEst = document.createElement("Estado");
		Text nodoValorEst = document.createTextNode(l.getEstado());
		nodoEst.appendChild(nodoValorEst);
		nodoLibro.appendChild(nodoEst);
		raiz.appendChild(nodoLibro); //pegamos el elemento a la raiz "Documento"
		}
		
		Source source = new DOMSource(document);
		Result result = new StreamResult(new java.io.File("libreria.xml")); //nombre del archivo
		Transformer transformer = TransformerFactory.newInstance().newTransformer();
		transformer.transform(source, result);
	}
	
	 public  String toString(){
		 String toret="";
		 for (Libro l : libreria)  
		      toret+=l.toString();
		 return toret;
	 }
	 
	
	
	
	
	
	
	
}
